//只出现一次的数字https://leetcode.cn/problems/single-number-iii/description/
#include<vector>
#include<algorithm>
using namespace::std;

class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        int n=nums.size();
        if(n==2) return nums;
        sort(nums.begin(),nums.end());
        vector<int> ans;
        if(nums[0]!=nums[1]) 
            ans.push_back(nums[0]);
        if(nums[n-1]!=nums[n-2]) 
            ans.push_back(nums[n-1]);
        if(ans.size()==2) 
            return ans;
        //else ans未满
        for(int i=1;i<n-1;i++)
        {
            if(nums[i-1]!=nums[i]&&nums[i]!=nums[i+1])
            {
                ans.push_back(nums[i]);
            }
            if(ans.size()==2) break;
        }
        return ans;
    }
};
//这题的关键是边界条件，不重复的数只有两个 由于遍历是将i,i-1,i+1三数比较，所以开头和结尾皆需单独讨论